﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GEAR_Structure.ClimateData
{
    public class InternalClimate
    {
        double temperature;//temperatura interna invernale [°C]
        double ur;//umidità interna invernale [%]
        double volume;//volume del vano roobook [m³]
        double airchange;//ricambi d'aria interni [m³/h]
        double aircircle;//portata d'aria di ricircolo [m³/h]
        double vaporgain;//carico di vapore interno al vano [kg/h]
        int humidityClass;//classe di umidità del ambinte considerato

        public enum classesIndoorHumidityEnvironments
        {
            [EnumDescription("Magazzini")]
            CUI_1 = 1,
            [EnumDescription("Uffici, negozi")]
            CUI_2,
            [EnumDescription("Alloggi con basso indice di affollamento")]
            CUI_3,
            [EnumDescription("Alloggi con alto indice di affollamento, palestre, cucine, cantine; edifici riscaldati con sistemi a gas senza camino")]
            CUI_4,
            [EnumDescription("Edifici speciali, per esempio lavanderie, distillerie, piscine")]
            CUI_5
        };

        /// <summary>
        /// classe di umidità del ambinte considerato
        /// </summary>
        public int HumidityClass
        {
            get { return humidityClass; }
            set { humidityClass = value; }
        }

        /// <summary>
        /// carico di vapore interno al vano [kg/h]
        /// </summary>
        public double VaporGain
        {
            get { return vaporgain; }
            set { vaporgain = value; }
        }
        /// <summary>
        /// temperatura interna invernale [°C]
        /// </summary>
        public double Temperature
        {
            get { return temperature; }
            set { temperature = value; }
        }
        /// <summary>
        /// umidità interna invernale [%]
        /// </summary>
        public double Ur
        {
            get { return ur; }
            set { ur = value; }
        }
        /// <summary>
        /// volume del vano roobook [m³]
        /// </summary>
        public double Volume
        {
            get { return volume; }
            set { volume = value; }
        }
        /// <summary>
        /// ricambi d'aria interni [m³/h]
        /// </summary>
        public double AirChange
        {
            get { return airchange; }
            set { airchange = value; }
        }
        /// <summary>
        /// portata d'aria di ricircolo [m³/h]
        /// </summary>
        public double AirCircle
        {
            get { return aircircle; }
            set { aircircle = value; }
        }
        //Costruttore
        public InternalClimate()
        {
            temperature = 20;
            ur = 0.65;
            airchange = 0.3;
            volume = 1;
            vaporgain = 0.06;
            humidityClass = 3;

        }
        /// <summary>
        /// Pressione del vapor d'acqua interna [Pa]
        /// </summary>
        public double InternalPressureVapor
        {
            get
            {
                return UNI.Energy.UniEnIso13788.Pvi(this);
            }
        }
    }
}
